package com.qire.manhua.model.viewModel;

import android.view.View.OnTouchListener;
import android.widget.BaseAdapter;

import com.qire.antsbinder.viewModel.annotation.ViewModelProperty;
import com.qire.antsbinder.viewModel.annotation.ViewModelProperty.Type;
import com.qire.common.support.base.IViewModel;
import com.qire.common.widget.animation.AnimationBinder;
import com.qire.manhua.BR;

import androidx.lifecycle.MutableLiveData;

public interface IComicReaderViewModel extends IViewModel {

    int variableId = BR.comicReaderViewModel;

    //region    #收藏浮层 begin
    @ViewModelProperty(name = "loopComicReaderViewAdapter")
    MutableLiveData<BaseAdapter> getLoopComicReaderViewAdapter();

    @ViewModelProperty(name = "chaptersPosition", type = Type.SET)
    void gotoChaptersPosition(int chaptersPosition);

    @ViewModelProperty(name = "chaptersPosition")
    MutableLiveData<Integer> getChaptersPosition();

    @ViewModelProperty(name = "pageTurning")
    MutableLiveData<Boolean> getPageTurning();

    @ViewModelProperty(name = "bulletSwitch", type = Type.SET)
    void bulletSwitch(boolean off);

    @ViewModelProperty(name = "bulletSwitch")
    MutableLiveData<Boolean> getBulletSwitch();

    @ViewModelProperty(name = "moveScrollOffset")
    MutableLiveData<Integer> getMoveScrollOffset();

    @ViewModelProperty(name = "comicReaderOnTouch")
    MutableLiveData<OnTouchListener> getComicReaderOnTouch();

    @ViewModelProperty(name = "title")
    MutableLiveData<CharSequence> getTitle();

    @ViewModelProperty(name = "topNavBarAnimation")
    MutableLiveData<AnimationBinder> getTopNavBarAnimation();

    @ViewModelProperty(name = "bottomMenuBarAnimation")
    MutableLiveData<AnimationBinder> getBottomMenuBarAnimation();

    @ViewModelProperty(name = "moreMenuBarAnimation")
    MutableLiveData<AnimationBinder> getMoreMenuBarAnimation();
    //endregion #收藏浮层 end

    //region    #收藏浮层 begin
    @ViewModelProperty(name = "favoritePromptVisible")
    MutableLiveData<Integer> getFavoritePromptVisible();
    //endregion #收藏浮层 end

    //region    #底部菜单栏 begin
    @ViewModelProperty(name = "timeText", type = Type.SET)
    void setTimeText(CharSequence timeText);

    @ViewModelProperty(name = "timeText")
    MutableLiveData<CharSequence> getTimeText();

    @ViewModelProperty(name = {"networkStatusText", "networkStatusIcon"}, type = Type.SET)
    void setNetworkStatus(CharSequence networkStatusText, int networkStatusIcon);

    @ViewModelProperty(name = "networkStatusText")
    MutableLiveData<CharSequence> getNetworkStatusText();

    @ViewModelProperty(name = "networkStatusIcon")
    MutableLiveData<Integer> getNetworkStatusIcon();

    @ViewModelProperty(name = "readProgressText", type = Type.SET)
    void setReadProgressText(CharSequence readProgressText);

    @ViewModelProperty(name = "readProgressText")
    MutableLiveData<CharSequence> getReadProgressText();

    @ViewModelProperty(name = {"bulletText", "bulletTextColor"}, type = Type.SET)
    void updateBulletText(CharSequence bulletText, String bulletTextColor);

    @ViewModelProperty(name = "bulletText")
    MutableLiveData<CharSequence> getBulletText();

    @ViewModelProperty(name = "bulletTextColor")
    MutableLiveData<String> getBulletTextColor();

    @ViewModelProperty(name = {"sendBtnTextColor", "sendBtnClickable"}, type = Type.SET)
    void updateSendBulletBtn(String sendBtnTextColor, Boolean sendBtnClickable);

    @ViewModelProperty(name = "sendBtnTextColor")
    MutableLiveData<String> getSendBtnTextColor();

    @ViewModelProperty(name = "sendBtnClickable")
    MutableLiveData<Boolean> getSendBtnClickable();

    @ViewModelProperty(name = {"favoritesIcon", "favoritesText"}, type = Type.SET)
    void setFavorites(Integer favoritesIcon, CharSequence favoritesText);

    @ViewModelProperty(name = "favoritesIcon")
    MutableLiveData<Integer> getFavoritesIcon();

    @ViewModelProperty(name = "favoritesText")
    MutableLiveData<CharSequence> getFavoritesText();

    //endregion #底部菜单栏 end

}
